/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package systole.persistence.brokersInterface;

import java.util.List;
import systole.domain.clinicalInformation.Medicine;
import systole.exceptions.ExceptionDAO;
import systole.synchronization.remote.entities.MedicineRemote;

/**
 *
 * @author Juan Manuel
 */
public interface MedicineSyncBroker {

    /**
     * 
     * @param medicineRemote
     * @throws ExceptionDAO 
     */
    public void saveMedicineRemote(MedicineRemote medicineRemote) throws ExceptionDAO;    

    /**
     * 
     * @return MedicineRemote list
     * @throws ExceptionDAO 
     */
    public List<MedicineRemote> getMedicinesToUpdate() throws ExceptionDAO;

    /**
     * 
     * @return
     * @throws ExceptionDAO 
     */
    public List<Medicine> getMedicinesToUpload() throws ExceptionDAO;

    /**
     * @param  remoteId 
     * @return
     * @throws ExceptionDAO
     */
    public Medicine getMedicineByRemoteId(int remoteId) throws ExceptionDAO;

    /**
     * 
     * @param medicine
     * @return
     * @throws ExceptionDAO
     */
    public MedicineRemote getMedicineRemoteByMedicine(Medicine medicine) throws ExceptionDAO;

    /**
     * 
     * @return
     * @throws ExceptionDAO
     */
    public int getLastRemoteMedicineIdSynchronized() throws ExceptionDAO;
}
